import { IFireShow, IBalanceShow, IWisdonShow } from "./interface";

/**
 * 抽象类 动物
 */
export abstract class Animal {
  // 抽象成员 种类  每个子类都要有 但值不一样
  abstract type: string

  // 共同方法 打招呼
  say() {
    console.log(`各位观众，大家好。我是${this.type}, 我叫${this.name}, 今年${this.age}岁。`);
  }

  constructor(
    public name: string,
    public age: number,
  ) {

  }

}

/**
 * 狮子类
 */
export class Lion extends Animal implements IFireShow {
  type: string = "狮子";

  singFile() {
    console.log(`${this.name}穿越了单火圈`)
  }
  doublFile() {
    console.log(`${this.name}穿越了双火圈`)
  }
}


/**
 * 老虎类
 */
export class Tiger extends Animal implements IFireShow{
  type: string = "老虎";

  singFile() {
    console.log(`${this.name}穿越了单火圈`)
  }
  doublFile() {
    console.log(`${this.name}穿越了双火圈`)
  }

}


/**
 * 猴子类
 */
export class Monkey extends Animal implements IBalanceShow{
  type: string = "猴子";

  dumuqiao() {
    console.log(`${this.name}走过了独木桥`)
  }
  zougangsi() {
    console.log(`${this.name}穿越了钢丝`)
  }
}


/**
 * 狗类
 */
export class Dog extends Animal implements IWisdonShow{
  type: string = "狗";

  suanshuiti() {
    console.log(`${this.name}在进行 算术题表演`)
  }
  dance() {
    console.log(`${this.name}在进行 跳舞表演`)
  }
}